package com.iuie.ns.datum.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.iuie.ns.datum.vo.TableChangeHistoryVO;
import com.iuie.ns.datum.vo.TableStructureVO;
import com.iuie.ns.frame.persistence.annotations.MyBatisRepository;

/**
 * 表结构-mapper
 * @author iuie
 * @date 2018-01-25 16:38:44
 */
@MyBatisRepository
public interface TableStructureMapper {

	/**
	 * 条件查询表实例
	 * @param condition
	 * @return
	 */
	List<TableStructureVO> findByCondition(@Param("condition") TableStructureVO condition);
	
	/**
	 * 根据ID查询
	 * @param id
	 * @return
	 */
	TableStructureVO findById(@Param("id") Long id);

	/**
	 * 根据Id删除表实例
	 * @param id
	 */
	Integer deleteById(@Param("id") Long id);

	/**
	 * 新增表实例
	 * @param table
	 */
	void addOne(TableStructureVO table);

	/**
	 * 更新表实例
	 * @param table
	 */
	void updateOne(TableStructureVO table);

	/**
	 * 新增表结构变更历史
	 * @param his
	 */
	void addUpdateHistory(TableChangeHistoryVO his);

	/**
	 * 根据tableId删除表的变更记录
	 * @param id
	 */
	void deleteTableChangeHisotry(@Param("tableId") Long tableId);

	/**
	 * 查询表实例变更历史
	 * @param tableId
	 * @return
	 */
	List<TableChangeHistoryVO> findChangeHistory(@Param("tableId") Long tableId);
	
	/**
	 * 根据项目Id查询表实例
	 * @param projectId
	 * @return
	 */
	List<TableStructureVO> findByProjectId(@Param("projectId") Long projectId);

}
